binary search *1600

Please click on ads to support us..

Python Code:

import sys
input = sys.stdin.readline
 
def calculate_time(x, n, c, s):
    total_time = 0
    for i in range(n):
        time = (abs(x - c[i]) / s[i])         total_time = max(total_time, time)
    return total_time
 
n = int(input())
c = list(map(int, input().split())) s = list(map(int, input().split()))  
l = 1
r = 1e10
check = 1e-6
 
while (r - l > check):
    distance = (r - l) / 3.0
    mid_1 = l + distance
    mid_2 = r - distance
    
    time_1 = calculate_time(mid_1, n, c, s) 
    time_2 = calculate_time(mid_2, n, c, s)
 
    if (time_1 <= time_2):
        r = mid_2
    if (time_1 >= time_2):
        l = mid_1
 
print(round(calculate_time(l, n, c, s), 12))


Comments

Submit
0 Comments
More Questions

405A - Gravity Flip
499B - Lecture
709A - Juicer
1358C - Celex Update
1466B - Last minute enhancements
450B - Jzzhu and Sequences
1582C - Grandma Capa Knits a Scarf
492A - Vanya and Cubes
217A - Ice Skating
270A - Fancy Fence
181A - Series of Crimes
1638A - Reverse
1654C - Alice and the Cake
369A - Valera and Plates
1626A - Equidistant Letters
977D - Divide by three multiply by two
1654B - Prefix Removals
1654A - Maximum Cake Tastiness
1649A - Game
139A - Petr and Book
1612A - Distance
520A - Pangram
124A - The number of positions
1041A - Heist
901A - Hashing Trees
1283A - Minutes Before the New Year
1654D - Potion Brewing Class
1107B - Digital root
25A - IQ test
785A - Anton and Polyhedrons